/*
 * RessourceManager.inl
 * This file is part of Dragon and Weed 2 
 *
 * Copyright (C) 2011 - François Berder
 *
 * Dragon and Weed 2 is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * Dragon and Weed 2 is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */



#include "Logger.hpp"

template<class T>
RessourceManager<T>::RessourceManager():
m_ressources()
{
}

template<class T>
RessourceManager<T>::~RessourceManager()
{
}

template<class T>
boost::shared_ptr<T> RessourceManager<T>::ressource(RessourceDef resDef)
{
	RessourceDef def(resDef.m_name); // avoid to take in account size parameter
	if(m_ressources.find(def) != m_ressources.end())
		return m_ressources[def];
		
	else if(loadRessource(def))
		return m_ressources[def];
		
	else
		return boost::shared_ptr<T>();

}

template<class T>
void RessourceManager<T>::releaseRessource(RessourceDef& resDef)
{
	resDef.m_size = 0;
	RessourceIterator itor = m_ressources.find(resDef);
	if(itor != m_ressources.end())
		m_ressources.erase(itor);
		
	else
		LogInfo << "Unable to release ressource :" << resDef.m_name << '.' << LogEnd;
}
